home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
edit
/
xvidoc.zip
/
SUMMARY.LST
< prev
next >
Wrap
File List
|
1992-07-28
|
25KB
|
661 lines
Summary of Differences between Vi and Xvi
Chris Downey
John Downey
Xvi (pronounced _e_c_k_s-_v_e_e-_e_y_e) is a free, portable,
multi-window implementation of the popular UNIX|- editor
vi.
This document summarises the differences between the
``real'' vi and xvi. These differences are divided
into three groups: _u_n_i_m_p_l_e_m_e_n_t_e_d _f_e_a_t_u_r_e_s, _d_i_f_f_e_r_e_n_c_e_s
and _e_n_h_a_n_c_e_m_e_n_t_s, and each of these is described in the
following sections.
_1. _U_n_i_m_p_l_e_m_e_n_t_e_d _F_e_a_t_u_r_e_s
_1._1. _E_x _M_o_d_e
The main area in which xvi is lacking is vi's _e_x mode, which is
not implemented at all (and neither are edit, e, and open modes).
However, many of the ex commands are available in xvi as colon
commands; the colon commands that have not been implemented are
mostly those which offer the same functionality as other commands
in vi mode.
Specifically, the following ex commands are not implemented, and
probably never will be within xvi:
_i_n_s_e_r_t _u_n_d_o _e_x
_c_h_a_n_g_e _o_p_e_n |
_a_p_p_e_n_d _z
while these ex commands, although not currently implemented, may
be added as colon commands at some time in the future:
_a_b_b_r_e_v_i_a_t_e _r_e_c_o_v_e_r _w_r_i_t_e>>
_u_n_a_b_b_r_e_v_i_a_t_e _j_o_i_n
_________________________
|- UNIX is a trademark of Bell Laboratories.
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _1
_2 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
_1._2. _V_i _c_o_m_m_a_n_d_s
The following vi mode commands are not implemented, although
there is no real reason why they shouldn't be:
_U =
while this one is inappropriate in the context of xvi, since
there is no _e_x mode:
_Q
_1._3. _P_a_r_a_m_e_t_e_r_s
The following parameters have not been implemented, and probably
won't be:
_a_d_a _l_i_s_p _r_e_d_r_a_w
_a_d_a_p_a_t_h _m_e_s_g _s_l_o_w_o_p_e_n
_a_u_t_o_p_r_i_n_t _m_o_d_e_l_i_n_e _t_e_r_m
_b_e_a_u_t_i_f_y _o_p_e_n _t_e_r_s_e
_d_i_r_e_c_t_o_r_y _o_p_t_i_m_i_z_e _t_t_y_t_y_p_e
_e_d_c_o_m_p_a_t_i_b_l_e _p_r_o_m_p_t _w_i_n_d_o_w
_h_a_r_d_t_a_b_s
while these parameters may well be implemented at some point:
_a_u_t_o_w_r_i_t_e _s_c_r_o_l_l _w_a_r_n
_e_r_r_o_r_b_e_l_l_s _s_o_u_r_c_e_a_n_y _w_r_i_t_e_a_n_y
_1._4. _M_i_s_c_e_l_l_a_n_e_o_u_s
Some features of certain commands do not work as they should.
Specifically:
o+ Repeat counts before insertions don't work.
o+ Appending to named buffers is not yet implemented.
o+ Typing ^Q in input mode does not mean the same as ^V; it
just inserts a `^Q', assuming it gets as far as the editor
at all.
o+ Typing ^W in insert mode does not back up one word as in vi.
o+ It is not possible to interrupt the editor while it is
performing certain operations. If you start off a big
global command, you have to wait for it to finish.
o+ Flags and counts after colon commands are not supported.
_P_a_g_e _2 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2
_S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i _3
o+ It is not possible to read the output of a system command
using
:r !_c_o_m_m_a_n_d
or to write into a command using
:w !_c_o_m_m_a_n_d
o+ The :substitute command does not support splitting of lines.
o+ Regular expressions, although implemented (see later for
more details), do not support the ~ character; also, the \u
and \l escape sequences are not supported on the right-hand
side of a substitute replacement pattern.
o+ The :global command only supports the commands [lps&~d].
o+ Undo does not work properly when applied to macros (either @
or :map); it should undo all the changes made by the macro,
but in fact only the last command within the macro is
undone.
_2. _E_n_h_a_n_c_e_m_e_n_t_s
The following extensions are available in xvi.
_2._1. _P_a_r_a_m_e_t_e_r _H_a_n_d_l_i_n_g
Xvi supports 5 types of parameter: as well as vi's _n_u_m_e_r_i_c,
_s_t_r_i_n_g and _b_o_o_l_e_a_n, it also has _e_n_u_m_e_r_a_t_e_d and _l_i_s_t types. The
former is used for e.g. format and regextype, while the latter is
currently only used for tags. The advantage of the _e_n_u_m_e_r_a_t_e_d
type is that if you try to set an illegal value, the set of
correct values will be displayed, which is very useful if you
have forgotten what the values may be. (Try :set preserve to see
an example of this.)
_2._2. _W_i_n_d_o_w_s
Xvi supports multiple _b_u_f_f_e_r_s and _w_i_n_d_o_w_s. A _b_u_f_f_e_r is the
object which holds a file in memory, while a _w_i_n_d_o_w is an area of
the screen which shows part of a buffer. Note that every window
references a buffer, even if no file is being edited.
The following commands are available for operating on buffers and
windows:
:buffer create a new buffer in a new window; can be followed by
a filename, which will be edited in the new buffer.
:split create a new window onto the current buffer by
splitting the current window in half. The two
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _3
_4 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
resulting windows are similar to _v_i_e_w_p_o_r_t_s on to a
single editing buffer, in that changes made in one
window are reflected in the other one.
:close close the current window; will also close the buffer if
this is the last window onto it.
:x / ZZ close only the current window. If the window is the
only one onto the buffer, the buffer will be closed as
well, writing it first if it is modified. Hence, for a
single window, this command does the same as in vi.
g move to the next window. This is normally the window
directly below the current one on the screen, or the
top window on the screen if the current window is the
bottom one.
^W increase the size of the current window (may be given a
numeric prefix, default is one line).
^T decrease the size of the current window (may be given a
numeric prefix, default is one line).
^O make the current window as large as possible.
^] as for vi, but creates a new buffer window if
appropriate (and if autosplit allows).
Note that the :quit command quits out of the editor, not out of a
window. The :close command is thus the equivalent of :quit for
windows. There is no equivalent of :x or ZZ for